/**
 * @Project : AlgorithmLearning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/13 19:12
 */

//游游拿到了一个数组，她每次操作可以任选一个元素加 1 或者减 1。
//游游想知道，将所有元素都变成和a_i相等需要操作最少多少次？你需要回答i∈[1,n]的结果。
//
//输入描述
//  第一行输入一个正整数n，代表数组的大小。
//  第二行输入n个正整数a_i，代表数组的元素。
//  1<= n <=10^5
//  1<= ai <=10^9
//输出描述
//  输出n行，分别代表i∈[1,n]的结果。
//
//示例 1
//输入
//3
//2 1 4
//输出
//3
//4
//5
//说明
//  数组变成[2,2,2]需要操作 3 次，变成[1,1,1]需要操作 4 次，变成[4,4,4]需要操作 5 次。

#include <vector>
#include <unordered_map>
#include <algorithm>
#include "iostream"

using namespace std;

/**
 * O(nlogn)
 */
int main() {
    int n;
    scanf("%d", &n);
    vector<int> list;
    unordered_map<int, long> map;
    long sum = 0;
    int a[n];

    for (int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
        list.push_back(a[i]);
        sum += a[i];
    }

    sort(list.begin(), list.end());

    sum -= list[0] * list.size();
    map[list[0]] = sum;

    for (int i = 1; i < list.size(); ++i) {
        long diff = list[i] - list[i - 1];
        sum +=  (diff * (i - 1))-(diff * (list.size() - i - 1)) ;
        map[list[i]] = sum;
    }

    for (int i = 0; i < n; ++i) {
        printf("%lld\n", map[a[i]]);
    }
}

/**
 * O(n^2) TTL
 */
//int main() {
//    int n;
//    scanf("%d", &n);
//    int a[n];
//
//    for (int i = 0; i < n; ++i) {
//        scanf("%d", &a[i]);
//    }
//
//    for (int i = 0; i < n; ++i) {
//        long res = 0;
//        for (int j = 0; j < n; ++j) {
//            res += abs(a[j] - a[i]);
//        }
//        printf("%lld\n", res);
//    }
//}